package cn.quevo.core.entity;


import cn.quevo.core.enums.UserStatusEnum;

import java.io.Serializable;
import java.util.Set;

/**
 * 用户基本信息接口
 *
 * @author July july_sky@foxmail.com
 * @version 1.0
 * @date 2018-03-09 14:55:31
 * @Copyright ©2015-2035 湘豫(北京)科技有限公司. All Rights Reserved.
 * @return
 */
public interface UserInfoDetails extends Serializable {

    /**
     * 获取UserId
     *
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:13
     * @return
     */
    Long getUserId();

    /**
     * 获取主体ID
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:24
     * @return
     */
    Long getSubjectId();

    /**
     * 获取用户名
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:31
     * @return
     */
    String getUserName();

    /**
     * 获取加密后的密码
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:36
     * @return
     */
    String getPassword();

    /**
     * 获取昵称
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:41
     * @return
     */
    String getNickName();

    /**
     * 获取所有角色
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:45
     * @return
     */
    Set<String> getRoles();

    /**
     * 获取所有权限
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:06:50
     * @return
     */
    Set<String> getPermissions();

    /**
     * 获取所属企业
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:07:19
     * @return
     */
    Long getCompId();

    /**
     * 获取用户归属
     * 
     * @author July july_sky@foxmail.com
     * @date 2018年3月19日 下午4:08:14
     * @return
     */
    Long getRecordOwnerId();

    /**
     * 用户状态
     *
     * @return
     */
    String getUserStatusCd();
}
